home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1997 February
/
EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso
/
enigma
/
earcd
/
comm
/
comm5
/
nwsbrkr5.lha
/
Reader
/
NewsBreaker
/
src
/
gui
/
Menu.c
< prev
Wrap
Text File
|
1996-12-14
|
5KB
|
154 lines
/*----------------------------------------------------------------------
menu
----------------------------------------------------------------------*/
/* todo: dynamisch erzeugen -- GadTools-NewMenu-Struktur: */
/*
Gadtools Menus
Die Gadtools.library erzeugt aus der NewMenu-Struktur eine
intuition-fertige Menu-Struktur. Das spart Programmierarbeit.
todo:
1. Init Defaults
- NewMenu ist default Menustruktur, intern
- daraus eine Execliste bauen, Eintragungen
2. MenuNew: Während Laufzeit
- daraus eine Menustruktur dynamisch bauen
-- Liste durchgehen und Einträge zählen (CountMynNodes)
-- menus-Speicher reservieren für menus[nodeanzahl+endmarke]
mit endmarke = 1,
Test ob Speicher OK
-- Liste durchgehen und Einträge in menus[i++] übertragen
-- Endmarke ist sowieso gesetzt, da Speicher = 0
-- menus[] an gadtools übergeben und layouten/darstellen lassen
-- menus-Speicher freigeben.
3. MenuEdit
(nachdem: Menupunkte gelöscht/geändert in Execliste:)
hier:
- Menubar abschalten
- erneut (2.) durchlaufen, schaltet Menus an.
4. MenuDispose
- Menubar abschalten
- Menus weg
- Execliste aus Speicher entfernen
*/
/*
Entwurf Menu-Node:
{
UBYTE nm_Type;
STRPTR nm_Label;
char[4] -- STRPTR nm_CommKey;
UWORD nm_Flags;
LONG nm_MutualExclude; ------- problem!!!
APTR nm_UserData;
}
*/
static struct NewMenu menus[] =
{
{NM_TITLE, "Projekt", 0, 0, 0, 0},
{NM_ITEM, "Über " NB_NAME, "?", 0, 0, (APTR) OPEN_ABOUT},
{NM_ITEM, "Hilfe...", 0, 0, 0, (APTR) OPEN_AMIGAGUIDE},
{NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
{NM_ITEM, NB_NAME " Befehlsreferenz", 0, 0, 0, (APTR) DISPLAY_HELP},
{NM_ITEM, NB_NAME " Fehlerliste", 0, 0, 0, (APTR) DISPLAY_BUGS},
{NM_ITEM, NB_NAME " Fehlerbericht", 0, 0, 0, (APTR) DISPLAY_BUGREPORT},
{NM_ITEM, NB_NAME " Wunschzettel", 0, 0, 0, (APTR) DISPLAY_FEATUREWISH},
{NM_ITEM, NB_NAME " Bestellschein", 0, 0, 0, (APTR) DISPLAY_ORDERFORM},
{NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
{NM_ITEM, "Ende", "Q", 0, 0, (APTR) QUIT_NEWSBREAKER},
{NM_TITLE, "Text", 0, 0, 0, 0},
{NM_ITEM, "Ausschneiden", "X", 0, 0, (APTR) CUT_TEXTFIELD},
{NM_ITEM, "Kopieren", "C", 0, 0, (APTR) COPY_TEXTFIELD},
{NM_ITEM, "Alles kopieren", "K", 0, 0, (APTR) COPYALL_TEXTFIELD},
{NM_ITEM, "Einfügen", "V", 0, 0, (APTR) PASTE_TEXTFIELD},
{NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
{NM_ITEM, "Wiederherstellen", "U", 0, 0, (APTR) UNDO_TEXTFIELD},
{NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
{NM_ITEM, "Löschen", "E", 0, 0, (APTR) ERASE_TEXTFIELD},
{NM_TITLE, "Lesen", 0, 0, 0, 0},
{NM_ITEM, "Gruppe wählen...", "G", 0, 0, (APTR) GET_NEW_GROUP},
{NM_ITEM, "Nachricht wählen...", "N", 0, 0, (APTR) DISPLAY_SELECTED_MESSAGE},
{NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
{NM_ITEM, "Nächste Nachricht", "+", 0, 0, (APTR) DISPLAY_NEXT_MESSAGE},
{NM_ITEM, "Vorherige Nachricht", "-", 0, 0, (APTR) DISPLAY_PREV_MESSAGE},
{NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
{NM_ITEM, "eMails wählen", "M", 0, 0, (APTR) GET_MAIL_GROUP},
{NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
{NM_ITEM, "Catch-up", "#", 0, 0, (APTR) CATCHUP_CURRENT_GROUP},
{NM_ITEM, "Löschen", "^", 0, 0, (APTR) DELETE_MESSAGE_SAFELY},
{NM_TITLE, "Schreiben", 0, 0, 0, 0},
{NM_ITEM, "Reply", "R", 0, 0, (APTR) WRITE_REPLY_MESSAGE},
{NM_ITEM, "FollowUp", "F", 0, 0, (APTR) WRITE_FOLLOWUP_MESSAGE},
{NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
{NM_ITEM, "eMail", "E", 0, 0, (APTR) WRITE_EMAIL_MESSAGE},
{NM_ITEM, "Posting", "P", 0, 0, (APTR) WRITE_POSTING_MESSAGE},
{NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
{NM_ITEM, "Nachricht speichern...", 0, 0, 0, (APTR) SAVE_MESSAGE},
{NM_ITEM, "Nachricht drucken...", 0, 0, 0, (APTR) PRINT_MESSAGE},
{NM_TITLE, "Einschränkungen", 0, 0, 0, 0},
{NM_ITEM, "Alle Nachrichten", "1", CHECKIT, ~1, (APTR) SET_FOCUS_ALL_MSG},
{NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
{NM_ITEM, "25 letzte Nachrichten", "2", CHECKIT, ~4, (APTR) SET_FOCUS_LAST25_MSG},
{NM_ITEM, "Nur neue Nachrichten", "3", CHECKIT | CHECKED, ~8, (APTR) SET_FOCUS_NEW_MSG},
{NM_TITLE, "Fenster", 0, 0, 0, 0},
{NM_ITEM, "Alles schließen n/a", 0, 0, 0, 0},
{NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
{NM_ITEM, "Snapshot n/a", 0, 0, 0, 0},
{NM_TITLE, "Debug-Tools", 0, 0, 0, 0},
{NM_ITEM, "zeige (F)ields der aktuellen Message", "F", 0, 0, (APTR) DEBUG_SHOWUMSFIELD},
{NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
{NM_ITEM, "zeige globale Var(i)ablen", "I", 0, 0, (APTR) DEBUG_SHOWGLOBALS},
{NM_ITEM, NM_BARLABEL, 0, 0, 0, 0},
{NM_ITEM, NB_AUTHOR_NAME " anmailen", 0, 0, 0, (APTR) WRITE_EMAIL_MESSAGE},
{NM_END, NULL, 0, 0, 0, 0}
};
BOOL
CreateMyMenus (void)
{
BOOL okay = FALSE;
/* erzeuge und layoute Menu */
visual_info = GetVisualInfo (Mywindow->WScreen, TAG_END);
if (visual_info)
{
strip = CreateMenus (menus, TAG_END); /* todo: mehrere Defaultmenus? */
if (strip)
if (LayoutMenus (strip, visual_info, GTMN_NewLookMenus, TRUE, TAG_END))
if (SetMenuStrip (Mywindow, strip))
{
okay = TRUE; /* Menü 100% ok */
}
}
return (okay);
}
void
RemoveMyMenus (void)
{
/* Menu Strukturen entfernen */
if (Mywindow->MenuStrip)
ClearMenuStrip (Mywindow);
if (strip)
FreeMenus (strip);
if (visual_info)
FreeVisualInfo (visual_info);
};